basic structure of a java program